diff --git a/.travis.yml b/.travis.yml
index 49c092d..3a823f7 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,7 @@
 language: php
 
 php:
+  - 5.2
   - 5.3.3
   - 5.4
   - 5.5
@@ -19,7 +20,7 @@
 sudo: false
 
 before_script:
-  - composer install --dev --no-progress
+  - sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.2' ]; then pear channel-discover pear.bovigo.org && pear install bovigo/vfsStream-beta; else composer install --dev --no-progress; fi"
   - sh -c "if [ '$DB' = 'pgsql' ] || [ '$DB' = 'pdo/pgsql' ]; then psql -c 'DROP DATABASE IF EXISTS ci_test;' -U postgres; fi"
   - sh -c "if [ '$DB' = 'pgsql' ] || [ '$DB' = 'pdo/pgsql' ]; then psql -c 'create database ci_test;' -U postgres; fi"
   - sh -c "if [ '$DB' = 'mysql' ] || [ '$DB' = 'mysqli' ] || [ '$DB' = 'pdo/mysql' ]; then mysql -e 'create database IF NOT EXISTS ci_test;'; fi"
@@ -34,6 +35,10 @@
       env: DB=pgsql
     - php: hhvm
       env: DB=pdo/pgsql
+    - php: 5.2
+      env: DB=sqlite
+    - php: 5.2
+      env: DB=pdo/sqlite
 
 branches:
   only:
diff --git a/tests/codeigniter/core/Output_test.php b/tests/codeigniter/core/Output_test.php
index a06c170..887c077 100644
--- a/tests/codeigniter/core/Output_test.php
+++ b/tests/codeigniter/core/Output_test.php
@@ -3,19 +3,20 @@
 class Output_test extends CI_TestCase {
 
 	public $output;
-	protected $_output_data = <<<HTML
-<html>
-	<head>
-		<title>Basic HTML</title>
-	</head>
-	<body>
-		Test
-	</body>
-</html>
-HTML;
+	protected $_output_data = '';
 
 	public function set_up()
 	{
+		$this->_output_data =<<<HTML
+		<html>
+			<head>
+				<title>Basic HTML</title>
+			</head>
+			<body>
+				Test
+			</body>
+		</html>
+HTML;
 		$this->ci_set_config('charset', 'UTF-8');
 		$output = $this->ci_core_class('output');
 		$this->output = new $output();
@@ -59,4 +60,4 @@
 		);
 	}
 
-}
\ No newline at end of file
+}
diff --git a/tests/mocks/database/schema/skeleton.php b/tests/mocks/database/schema/skeleton.php
index e5c5360..b6d4b78 100644
--- a/tests/mocks/database/schema/skeleton.php
+++ b/tests/mocks/database/schema/skeleton.php
@@ -22,7 +22,7 @@
 	 */
 	public static function init($driver)
 	{
-		if (empty(static::$db) && empty(static::$forge))
+		if (empty(self::$db) && empty(self::$forge))
 		{
 			$config = Mock_Database_DB::config($driver);
 			$connection = new Mock_Database_DB($config);
@@ -34,12 +34,12 @@
 			$loader->dbforge();
 			$forge = CI_TestCase::instance()->ci_instance_var('dbforge');
 
-			static::$db = $db;
-			static::$forge = $forge;
-			static::$driver = $driver;
+			self::$db = $db;
+			self::$forge = $forge;
+			self::$driver = $driver;
 		}
 
-		return static::$db;
+		return self::$db;
 	}
 
 	/**
@@ -50,7 +50,7 @@
 	public static function create_tables()
 	{
 		// User Table
-		static::$forge->add_field(array(
+		self::$forge->add_field(array(
 			'id' => array(
 				'type' => 'INTEGER',
 				'constraint' => 3
@@ -68,11 +68,11 @@
 				'constraint' => 40
 			)
 		));
-		static::$forge->add_key('id', TRUE);
-		static::$forge->create_table('user', TRUE);
+		self::$forge->add_key('id', TRUE);
+		self::$forge->create_table('user', TRUE);
 
 		// Job Table
-		static::$forge->add_field(array(
+		self::$forge->add_field(array(
 			'id' => array(
 				'type' => 'INTEGER',
 				'constraint' => 3
@@ -85,11 +85,11 @@
 				'type' => 'TEXT'
 			)
 		));
-		static::$forge->add_key('id', TRUE);
-		static::$forge->create_table('job', TRUE);
+		self::$forge->add_key('id', TRUE);
+		self::$forge->create_table('job', TRUE);
 
 		// Misc Table
-		static::$forge->add_field(array(
+		self::$forge->add_field(array(
 			'id' => array(
 				'type' => 'INTEGER',
 				'constraint' => 3
@@ -102,8 +102,8 @@
 				'type' => 'TEXT'
 			)
 		));
-		static::$forge->add_key('id', TRUE);
-		static::$forge->create_table('misc', TRUE);
+		self::$forge->add_key('id', TRUE);
+		self::$forge->create_table('misc', TRUE);
 	}
 
 	/**
@@ -136,13 +136,13 @@
 
 		foreach ($data as $table => $dummy_data)
 		{
-			static::$db->truncate($table);
+			self::$db->truncate($table);
 
 			foreach ($dummy_data as $single_dummy_data)
 			{
-				static::$db->insert($table, $single_dummy_data);
+				self::$db->insert($table, $single_dummy_data);
 			}
 		}
 	}
 
-}
\ No newline at end of file
+}
